home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Aplikacje_64-bitowe / Daum_PotPlayer / PotPlayer1.5.29332-x64.EXE / PxShader / Unsharp mask.txt < prev    next >
Text File  |  2010-05-20  |  2KB  |  52 lines

  1. // unsharp mask=ps_2_0
  2. // Code from MPC
  3. // unsharp mask by crantastic
  4.  
  5. sampler s0 : register(s0);
  6. float4 p0 : register(c0);
  7. float4 p1 : register(c1);
  8.  
  9. #define width (p0[0])
  10. #define height (p0[1])
  11. #define counter (p0[2])
  12. #define clock (p0[3])
  13. #define one_over_width (p1[0])
  14. #define one_over_height (p1[1])
  15.  
  16. #define PI acos(-1)
  17.  
  18. //Feel free to change the threshold or intensity
  19. #define threshold .0009
  20. #define intensity .5
  21.  
  22. float4 main(float2 tex : TEXCOORD0) : COLOR
  23. {
  24. float dx = 4/width;
  25. float dy = 4/height;
  26.  
  27. float4 c1 = tex2D(s0, tex + float2(-dx,dy));
  28. float4 c2 = tex2D(s0, tex + float2(0,dy));
  29. float4 c3 = tex2D(s0, tex + float2(dx,dy));
  30. float4 c4 = tex2D(s0, tex + float2(-dx,0));
  31. float4 c5 = tex2D(s0, tex + float2(0,0));
  32. float4 c6 = tex2D(s0, tex + float2(dx,0));
  33. float4 c7 = tex2D(s0, tex + float2(-dx,-dy));
  34. float4 c8 = tex2D(s0, tex + float2(0,-dy));
  35. float4 c9 = tex2D(s0, tex + float2(dx,-dy));
  36.  
  37. float4 c10 = (2*(c2 + c4 + c6 + c8) + (c1 + c3 + c7 + c9)+ 4*c5)/16;;
  38. float4 c11;
  39. float4 c0;
  40.  
  41. c11 =abs(dot(c10-c5,float4(0.299, 0.587, 0.114, 0)));
  42.  
  43. if( abs(dot(c10-c5, float4(0.299, 0.587, 0.114, 0)))< threshold) c0 =c5;
  44. else c0 = c5+intensity*(c5-c10);
  45.  
  46. //these two lines reduce sharpening of the black borders
  47. if (dot(c1, float4(0.299, 0.587, 0.114, 0)) < .067) if(dot(c2, float4(0.299, 0.587, 0.114, 0)) < .067 ) if(dot(c3, float4(0.299, 0.587, 0.114, 0)> .5005)) c0 = c5;
  48. if (dot(c7, float4(0.299, 0.587, 0.114, 0)) < .067) if(dot(c8, float4(0.299, 0.587, 0.114, 0)) < .067 ) if(dot(c9, float4(0.299, 0.587, 0.114, 0)> .5005)) c0 = c5;
  49.  
  50.  
  51. return c0;
  52. };